﻿using UnityEngine.Events;

namespace Anderson.PluginFramework
{
    public interface IContextListener
    {
        void AddPluginListener(UnityAction<PluginEventArg> call);
        void RemovePluginListener(UnityAction<PluginEventArg> call);
        void FirePluginEvent(PluginEventArg arg);

        void AddServiceListener(UnityAction<ServiceEventArg> call);
        void RemoveServiceListener(UnityAction<ServiceEventArg> call);
        void FireServiceEvent(ServiceEventArg arg);

        void AddFrameworkListener(UnityAction<FrameworkEventArg> call);
        void RemoveFrameworkListener(UnityAction<FrameworkEventArg> call);
        void FireFrameworkEvent(FrameworkEventArg arg);
    }
}